package ${packageName}.mapper;

import ${packageName}.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* ${classInfo.classComment}Mapper
* ⚠️ 修改之后请勿使用生成器再次生成，否则会覆盖修改
*
* @author ${authorName}
* @since 1.0 Created in ${.now?string('yyyy/MM/dd HH:mm')}
*/
@Mapper
public interface ${classInfo.realClassMapperName}Mapper {

    /**
     * 新增一条记录
     *
     * @param ${classInfo.modelName} 新增数据
     **/
    int insert(${classInfo.realClassName} ${classInfo.modelName});

    /**
     * 新增多条记录
     *
     * @param list 新增数据列表
     **/
    int batchInsert(List<${classInfo.realClassName}> list);

    /**
     * 更新一条记录
     *
     * @param ${classInfo.modelName} 更新的数据
     **/
    int update(${classInfo.realClassName} ${classInfo.modelName});

    /**
     * 根据id删除一条记录
     *
     * @param key 主键
     **/
    int delete(Object key);

    /**
     * 批量删除操作
     *
     * @param list 删除的数据
     **/
    int batchDelete(List<Object> list);

    /**
     * 根据主键查询
     *
     * @param key 主键
     **/
    ${classInfo.realClassName} selectByKey(Object key);

    /**
     * 根据条件查询
     *
     * @param ${classInfo.modelName} 查询条件
     **/
    List<${classInfo.realClassName}> selectList (${classInfo.realClassName} ${classInfo.modelName});

    /**
     * 分页条件查询
     *
     * @param ${classInfo.modelName} 查询条件
     * @param page 页
     * @param pageSize 每页大小
     **/
    List<${classInfo.realClassName}> selectPage (@Param("${classInfo.modelName}") ${classInfo.realClassName} ${classInfo.modelName}, @Param("page") Integer page, @Param("pageSize") Integer pageSize);

    /**
     * 总量查询
     *
     * @param ${classInfo.modelName} 查询条件
     **/
    int total(${classInfo.realClassName} ${classInfo.modelName});
}
